package rak.r91.service;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import rak.r91.dao.ItemAttributeDao;
import rak.r91.dao.ItemDao;
import rak.r91.dao.ItemTypeDao;
import rak.r91.data.Item;
import rak.r91.data.ItemAttribute;
import rak.r91.data.ItemType;

public class SimpleItemManager implements ItemManager{
    ApplicationContext context = new ClassPathXmlApplicationContext("conf/Spring-dao.xml");
    private ItemTypeDao itemTypeDao = (ItemTypeDao) context.getBean("ItemTypeDao");	
    private ItemDao itemDao = (ItemDao) context.getBean("ItemDao");
    private ItemAttributeDao itemAttributeDao = (ItemAttributeDao) context.getBean("ItemAttributeDao");
    
	@Override
	public List<ItemType> getItemTypes() {
		return itemTypeDao.getItemTypes();
	}

	@Override
	public List<ItemType> getItemSubTypes(int itemSubTypeID) {
		return itemTypeDao.getItemSubTypes(itemSubTypeID);
	}

	@Override
	public List<Item> getItems(int itemTypeID) {
		return itemDao.getItems(itemTypeID);
	}

	@Override
	public Item getItem(int itemID) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void addNewItem(Item item, List<ItemAttribute> itemAttributeList) {
		int id = itemDao.addItem(item);
		item.setItemID(id);
		for (ItemAttribute itemAttribute : itemAttributeList) {
			if(itemAttribute.getDataType()==1)itemAttributeDao.insertAttributeText(itemAttribute, item);
			if(itemAttribute.getDataType()==2)itemAttributeDao.insertAttributeNr(itemAttribute, item);
		}
		
	}

	@Override
	public Item getItemAndAttributes(int itemID) {
		Item newItem = itemDao.getItem(itemID);
		newItem.setAttributeList(itemAttributeDao.getItemAtrributesAndValues(newItem));
		return newItem;
	}

	@Override
	public List<ItemAttribute> getItemTypeAttributes(ItemType itemType) {
		return itemAttributeDao.getItemAttributes(itemType.getItemTypeID());
	}

	@Override
	public int changeItem(Item item) {
		itemDao.updateItem(item);
		for (ItemAttribute attribute : item.getAttributeList()) {
			itemAttributeDao.updateItemAttribute(attribute);
		}
		return 0;
	}



}
